#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//递归：程序调用自身的技巧,大大减少了程序的代码量
//两个必要条件：存在限制条件，每次递归调用后越来越接近这个限制条件


//练习1: 
//接受一个整型值（无符号），按照顺序打印他的每一位
//例如：
//输入：1234  输出：1 2 3 4

//%d打印有符号的整数(正负数)  %u打印无符号整数
 
//int main()
//{
//
//	unsigned int num = 0;
//	scanf("%u", &num);
//	//1  2  3  4
//	while (num)
//	{
//		printf("%u", num % 10);
//		num=num / 10;
//	}
//	return 0;
//}


//递与归的实现


//void print(unsigned int n)
//{
//	if (n > 9)//限制条件
//	{
//		print(n / 10);//限制条件
//	}
//	printf("%d ", n % 10);
//}
//
// int main()
//{
//
//	unsigned int num = 0;
//	scanf("%u", &num);
//	//1  2  3  4
//	print(num);//接受一个整型值（无符号），按照顺序打印他的每一位
//
//	return 0;
//}



#include<string.h>
//练习2：
//编写函数不允许创建临时变量，求字符串的长度
//模拟实现strlen

//int my_strlen(char str[])也可以，形式不同

//int my_strlen(char* str)
//{
//	int count = 0;//此时count是临时变量
//	while (*str != '\0')
//	{
//		count++;
//		*str++;

//	}
//	return count;
//
//}





//递归求解
//my_strlen("abc")
//1+my_strlen("bc")
//1+1+my_strlen("c")
//1+1+1+my_strlen("")
//1+1+1+0
 
 
 
//int my_strlen(char* str)
//{
//	if (*str != '\0')
//		return 1 + my_strlen(str+1);
//	else
//		return 0;

//}

//int main()
//{
//	char arr[] = "abc";
//	int len = my_strlen(arr);
//	printf("%d\n", len);
//
//	return 0;
//}